#ifndef __APP_BUFFER_H_
#define __APP_BUFFER_H_
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "log.h"
#include <pthread.h>


typedef struct {
    int total_len;  //容量长度 
    int data_len;  //数据长度
    char *data;    //数据
} app_sub_buffer_t;

typedef struct {
    app_sub_buffer_t *sub_buffers[2] ;
    int write_index;  //读区下标
    int read_index;  //写区下标
    pthread_mutex_t read_lock; //读锁
    pthread_mutex_t swap_lock;  //交换锁

} app_buffer_t;





/**
 * @brief 初始化缓冲区
 *  创建 结构体 、  数组 、子结构体 、子结构体的数据  开辟堆内存空间
 */
app_buffer_t *app_buffer_init( int total_len);


/**
 * @brief 写入数据 
 * @return  成功0 失败-1
 */
int app_buffer_write( app_buffer_t *buffer, char *data, uint8_t data_len);


/**
 * @brief 读取数据
 * @return   实际读取到的数据长度
 */
int app_buffer_read( app_buffer_t *buffer, char *read_buf, int read_buf_len);



/**
 * @brief 销毁缓冲区
 */
void app_buffer_destroy( app_buffer_t *buffer);


#endif // __APP_BUFFER_H_
